package com.jrx.anytxn.customer.mapper.ext;

import com.jrx.anytxn.customer.entity.CmLimitChangeLog;
import com.jrx.anytxn.customer.mapper.base.CmLimitChangeLogMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author user
 */
public interface ExtCmLimitChangeLogMapper extends CmLimitChangeLogMapper {

    /**
     * 根据主键查询 产品额度变更记录（续期供数使用）表
     * @param tenantId
     *  @param channel
     *   @param productId
     *    @param customerId
     * @return CmLimitChangeLog
     */
    CmLimitChangeLog selectLimitOneByProductIdAndCustomerId(@Param("tenantId") String tenantId, @Param("channel") String channel, @Param("productId") String productId, @Param("customerId") String customerId);

    /**
     * 更新综合额度信息
     * @param changeLog
     */
    void updateEtlExpiryDate(CmLimitChangeLog changeLog);

    /**
     * 获取用户"首笔贷款额度信息"
     * @param tenantId
     * @param customerId
     * @param productIds
     * @return
     */
    CmLimitChangeLog queryFirstLimitChangeLog(@Param("tenantId") String tenantId, @Param("customerId")String customerId, @Param("productIds")List<String> productIds);

    /**
     * 获取用戶最新的综合额度生效日期
     * @param tenantId
     * @param customerId
     * @param productIds
     * @return
     */
    CmLimitChangeLog queryLatestEtlEffectDate(@Param("tenantId") String tenantId, @Param("customerId")String customerId, @Param("productIds")List<String> productIds);

    /**
     * 更新授信合同号和额度编号
     *
     * @param changeLog
     */
    void updateEtlContractNumberAndEtlLimitId(CmLimitChangeLog changeLog);

    /**
     * 根据租户Id，客户Id，产品Id查询客户的额度变更记录
     * @param tenantId
     * @param customerId
     * @param productId
     * @return
     */
    List<CmLimitChangeLog> queryChangeLogsByCustomerIdAndProductId(@Param("tenantId") String tenantId, @Param("customerId")String customerId, @Param("productId")String productId);

    /**
     * 更新结清日期
     * @param changeLog
     */
    void updateEtlSettleDate(CmLimitChangeLog changeLog);

    /**
     * 根据综合额度编号查询所有的额度信息
     * @param tenantId
     * @param etlContractNumber
     * @param customerId
     * @return
     */
    List<CmLimitChangeLog> queryAllByEtlContractNumber(@Param("tenantId") String tenantId, @Param("etlContractNumber") String etlContractNumber, @Param("customerId") String customerId);

    /**
     * 根据条件查询记录
     * @param queryCon
     * @return
     */
    List<CmLimitChangeLog> queryByCon(@Param("cond") CmLimitChangeLog queryCon);
}
